﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CadCD;

namespace CadCD_WindowsForm
{
    public partial class CDLib : Form
    {
        private Controlador control = new Controlador();
        private bool flagBusca = false;

        public CDLib()
        {
            InitializeComponent();

            for (int i = 1950; i <= Convert.ToInt32(DateTime.Today.ToString("yyyy")); i++)
            {
                cbxAno.Items.Add(i);
            }

            foreach (string i in CD.getCategoryList())
            {
                cbxCategoria.Items.Add(i);
            }
        }

        private void CDLib_Load(object sender, EventArgs e)
        {

        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            if (this.flagBusca)
            {
                CD aux = null;

                if (txbID.Text.Length > 0)
                {
                    aux = this.control.findCD(Convert.ToInt32(txbID.Text));
                }

                if (aux != null)
                {
                    txbID.Text = Convert.ToString(aux.getId());
                    txbArtista.Text = aux.getArtista();
                    txbTitulo.Text = aux.getTitulo();
                    cbxAno.Text = Convert.ToString(aux.getAno());
                    cbxCategoria.Text = Convert.ToString(aux.getCategoria());
                }
                else
                {
                    MessageBox.Show("Nenhum CD encontrado", "Resultado da Busca", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    txbID.Text = "";
                    txbArtista.Text = "";
                    txbTitulo.Text = "";
                    cbxAno.SelectedIndex = -1;
                    cbxCategoria.SelectedIndex = -1;

                }

                this.flagBusca = false;
                txbID.Enabled = false;
                
            }
            else
            {
                txbID.Text = "";
                txbArtista.Text = "";
                txbTitulo.Text = "";
                cbxAno.SelectedIndex = -1;
                cbxCategoria.SelectedIndex = -1;

                txbID.Enabled = true;
                txbID.Focus();
                this.flagBusca = true;
            }
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            txbID.Enabled = false;

            string titulo;
            string artista;
            string categoria;
            int ano;

            titulo = txbTitulo.Text;
            artista = txbArtista.Text;
            categoria = cbxCategoria.Text;
            
            try
            {
                ano = Convert.ToInt32(cbxAno.Text);
            } catch(Exception){
                ano = 0;
            }

            try
            {
                /*
                if (txbID.Text.Length > 0)
                {
                    throw new Exception("CD já cadastrado.\nPara alterá-lo uso o botão editar.");
                }
                 */

                this.control.addCD(titulo, artista, categoria, ano);
                MessageBox.Show("CD Adcionado com sucesso");

                txbID.Text = "";
                txbArtista.Text = "";
                txbTitulo.Text = "";
                cbxAno.SelectedIndex = -1;
                cbxCategoria.SelectedIndex = -1;

                CD cdAdded = this.control.getLastAdded();

                txbID.Text = Convert.ToString(cdAdded.getId());
                txbTitulo.Text = cdAdded.getTitulo();
                txbArtista.Text = cdAdded.getArtista();
                cbxCategoria.Text = cdAdded.getCategoria();
                cbxAno.Text = Convert.ToString(cdAdded.getAno());
            }
            catch (Exception erro)
            {
                MessageBox.Show("Falha na criação do cd\n"+erro.Message,"ATENÇÃO", MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
            }
        }

        private void btnNext_Click(object sender, EventArgs e)
        {
            txbID.Enabled = false;

            try
            {
                CD nextCD = this.control.nextCD();

                txbID.Text = Convert.ToString(nextCD.getId());
                txbTitulo.Text = nextCD.getTitulo();
                txbArtista.Text = nextCD.getArtista();
                cbxCategoria.Text = nextCD.getCategoria();
                cbxAno.Text = Convert.ToString(nextCD.getAno());
            }
            catch (Exception erro)
            {
                MessageBox.Show(erro.Message);
            }
            
        }

        private void btnPrev_Click(object sender, EventArgs e)
        {
            txbID.Enabled = false;

            try
            {
                CD prevCD = this.control.prevCD();

                txbID.Text = Convert.ToString(prevCD.getId());
                txbTitulo.Text = prevCD.getTitulo();
                txbArtista.Text = prevCD.getArtista();
                cbxCategoria.Text = prevCD.getCategoria();
                cbxAno.Text = Convert.ToString(prevCD.getAno());
            }
            catch (Exception erro)
            {
                MessageBox.Show(erro.Message);
            }

        }

        private void btnApagar_Click(object sender, EventArgs e)
        {
            txbID.Enabled = false;

            try
            {
                if (this.txbID.Text.Length <= 0)
                {
                    throw new Exception("Nenhum cd foi selecionado");
                }

                if (MessageBox.Show("O CD Selecionado Será apagado, deseja continuar", "Confirmação para apagar", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                {
                    try
                    {
                        CD aux;

                        aux = this.control.removerCD(this.control.findCD(Convert.ToInt32(this.txbID.Text)));

                        txbID.Text = Convert.ToString(aux.getId());
                        txbTitulo.Text = aux.getTitulo();
                        txbArtista.Text = aux.getArtista();
                        cbxCategoria.Text = aux.getCategoria();
                        cbxAno.Text = Convert.ToString(aux.getAno());
                    }
                    catch (Exception erro)
                    {
                        MessageBox.Show(erro.Message);
                        txbID.Text = "";
                        txbArtista.Text = "";
                        txbTitulo.Text = "";
                        cbxAno.SelectedIndex = -1;
                        cbxCategoria.SelectedIndex = -1;
                    }

                }
            }
            catch (Exception msg)
            {
                MessageBox.Show(msg.Message, "ATENÇÃO", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}
